//package com.example.stock.schedule;
//
//import cn.hutool.core.date.LocalDateTimeUtil;
//import cn.hutool.core.lang.Console;
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.example.stock.entity.Stock;
//import com.example.stock.service.IStockService;
//import com.example.stock.tencent.*;
//import com.example.stock.util.DateUtil;
//import com.example.stock.util.HolidayUtil;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.PostConstruct;
//import java.sql.Wrapper;
//import java.time.LocalDateTime;
//import java.time.LocalTime;
//import java.time.ZoneId;
//import java.time.format.DateTimeFormatter;
//import java.util.*;
//import java.util.function.Function;
//import java.util.stream.Collectors;
//
//@Service
//public class YiDongTask {
//
//    List<Map<String, StockBean>> list = new ArrayList<>();
//
//    @Autowired
//    IStockService stockService;
//
//    Map<String, Stock> lastHighMap = new HashMap<>();
//
//    @Autowired
//    private TencentProxy tencentProxy;
//
//
//    @Scheduled(cron = "*/10 * * * * *")
//    public void queryLoading() throws Exception {
//        // 获取当前时间
//        LocalTime noww = LocalTime.now();
//
//        // 定义允许的时间段
//        LocalTime morningStart = LocalTime.of(9, 30);
//        LocalTime morningEnd = LocalTime.of(11, 30);
//        LocalTime afternoonStart = LocalTime.of(13, 0);
//        LocalTime afternoonEnd = LocalTime.of(15, 0);
//
//        // 检查当前时间是否在指定的时间段内
//        boolean isAllowedTime = (!noww.isBefore(morningStart) && noww.isBefore(morningEnd)) ||
//                (!noww.isBefore(afternoonStart) && noww.isBefore(afternoonEnd));
//
//        if (isAllowedTime) {
//            System.out.println("当前时间是在允许的时间段内，可以通过。");
//        } else {
//            System.out.println("当前时间不在允许的时间段内，无法通过。");
//            return ;
//        }
//        if(lastHighMap.isEmpty()){
//            LocalDateTime calcTime = null;
//            for (int i = 1; i < 10; i++) {
//                // 获取当前时间
//                LocalDateTime nowLocal =  LocalDateTime.now();
//                nowLocal = nowLocal.plusDays(-i);
//                // 定义日期时间格式
//                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//                // 格式化当前时间
//                String formattedNow = nowLocal.format(formatter);
//                String workingDay = HolidayUtil.isWorkingDay(formattedNow);
//                if("0".equals(workingDay)){
//                    calcTime = nowLocal;
//                    break;
//                }
//            }
//            Date date = Date.from(calcTime.atZone(ZoneId.systemDefault()).toInstant());
//            Date dayBegin = DateUtil.getDayBegin(date);
//            Date dayEnd = DateUtil.getDayEnd(date);
//            List<Stock> list1 = stockService.list(Wrappers.<Stock>lambdaQuery().eq(Stock::getCalcType, 3).ge(Stock::getCalcTime, dayBegin).le(Stock::getCalcTime, dayEnd));
//            List<Stock> highArr = new ArrayList<>();
//            list1.forEach(obj->{
//                if(Objects.equals(obj.getPriceNow(), obj.getHighLimit())){
//                    highArr.add(obj);
//                }
//            });
//            lastHighMap = highArr.stream().collect(Collectors.toMap(Stock::getCode, Function.identity()));
//        }
//        List<StockBean> curBeans = tencentProxy.getDataByCodes(lastHighMap.keySet().stream().collect(Collectors.joining(",")));
//        Map<String, StockBean> collect = curBeans.stream().collect(Collectors.toMap(StockBean::getCode, Function.identity()));
//        int test = 0;
//        // 定义日期时间格式
//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//        // 获取当前时间
//        LocalDateTime now = LocalDateTime.now();
//        // 格式化当前时间
//        String formattedNow = now.format(formatter);
//        for (Map.Entry<String, StockBean> stringStockBeanEntry : collect.entrySet()) {
//            String key =stringStockBeanEntry.getKey();
//            StockBean value=stringStockBeanEntry.getValue();
//            if(list.size()>=11) {
//                for (int i = list.size() - 11; i <= list.size() - 1; i++) {
//                    Map<String, StockBean> stringStockBeanMap = list.get(i);
//                    StockBean stockBean = stringStockBeanMap.get(key);
//                    if(value.getPriceNow()>stockBean.getPriceNow() && value.getPriceNow() == value.getHighLimit()){
//                        DingDingBot.send(formattedNow+"\n" +stockBean.getName()+"-"+value.getCode()+"已拉至涨停,当前封单量+"+value.getBuyOrders().getOrders().get(0).getQuantity()+"手");
//                        test = 4;
//                        break;
//                    }
//                    if(value.getChangePercent() - stockBean.getChangePercent() >= 3){
//                        DingDingBot.send(formattedNow+"\n" +stockBean.getName()+"-"+value.getCode()+"在2min钟内快速拉伸"+(value.getChangePercent()-stockBean.getChangePercent())+"%,当前涨幅"+value.getChangePercent()+"%");
//                        test = 3;
//                        break;
//                    }
//                }
//            }else{
//                for (int i = 0; i <= list.size() - 1; i++) {
//                    Map<String, StockBean> stringStockBeanMap = list.get(i);
//                    StockBean stockBean = stringStockBeanMap.get(key);
//
//                    if(value.getPriceNow() == value.getHighLimit()){
//                        DingDingBot.send(formattedNow+"\n" +stockBean.getName()+"-"+value.getCode()+"已拉至涨停,当前封单量+"+value.getBuyOrders().getOrders().get(0).getQuantity()+"手");
//                        test = 1;
//                        break;
//                    }
//                    if(value.getChangePercent() - stockBean.getChangePercent() >= 3){
//                        DingDingBot.send(formattedNow+"\n" +stockBean.getName()+"-"+value.getCode()+"在开盘快速拉伸"+(value.getChangePercent()-stockBean.getChangePercent())+"%,当前涨幅"+value.getChangePercent()+"%");
//                        test = 2;
//                        break;
//                    }
//                }
//            }
//            if(test>0){
//                Console.log(formattedNow+"--",test);
//                break;
//            }
//        }
//        list.add(collect);
//        if(list.size()>20){
//            list.remove(0);
//        }
//    }
//}
